-
Понидилок
Андрей
Создание
карт в играх
Карта
в игре является одним из
важных элементов. Но для
новичков, порой, созание
карты является
невыполнимой задачей. Я
надеюсь, что данная статья
поможет разобратся в самом
простом способе создания
карт при помощи тайлов
(маленьких картинок из
которых составляется
карта)
Для
начала запустим наш
любимый Delphi и создадим
новый проект.
Затем нам надо создать
новый тип для карты и
объявить этот тип в
переменных, для чего пишем:
unit
Unit1;
interface
uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
type
TMap=record //
Наш новый тип для карты
TMap
Land:integer; // Указатель
на номер спрайта земли
Blok:boolean; // Является
ли этот квадрат
проходимым
end;
var
Form1: TForm1;
Map:array[1..30,
1..30] of TMap; //
Сама карта размером 30х30
тайлов
implementation
{$R *.DFM}
end.
Теперь
нам нужны сами тайлы и
место, где они будут
храниться.
Для этого надо:
1. Сохранить эту картинку в
формате *.bmp
2. На форму поместить
компонент ImageList
3. В свойствах этого
компонента написать
следующие значения:
Height = 32 и Widht
= 32
4. Щелкнуть
два раза крысой на
компоненте ImageList и нажать
"Add..."
5. Выбрать в диалоговом
окне нашу картинку и
нажать "Открыть"
6. Появится окошко с
надьписью на английсом,
вроде "Ваша картинка не
влазит в ИмаджеЛист.
Рзделить ее на 20 картинок ?
" Нажимаем "Yes"
7. Наша картинка уже
находится в ImageList, но есть
один касяк: на каждой
картинке есть белые точки -
это прозрачный цвет по
умолчанию. Для того чтобы
исправить этот глюк надо
выделить все 20 картинок и в
списке под названием
Transparent Color выбрать
clNone
8. Нажимаем
"ОК"
9. На форму помещаем
компонент Image и в свойстве
Align ставим alClient
Теперь
у нас все готово для
рисования карты.
Теперь
в событии OnCreate нашей формы
пишем:
procedure
TForm1.FormCreate(Sender: TObject);
var
i,j:integer;
x,y:integer;
r:integer;
begin
x:=0;
y:=0;
randomize;
for i:=1 to 30 do
for j:=1 to 30 do
begin
r:= random(20);
if r>=15 then begin
map[i,j].blok:=False;
end;
map[i,j].land:=r;
ImageList1.draw(Image1.Canvas,x,y,MAP[i,j].land);
x:=x+32;
if x>=960 then
begin
x:=0;
y:=y+32;
end;
end;
end;
Все,
карта у нас готова! Легко и
просто. Для наглядности
скачайте мой пример:
>>> CreateMap.rar <<<
-
|